.TH std::jthread::swap 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::jthread::swap \- std::jthread::swap

.SH Synopsis
   void swap( std::jthread& other ) noexcept;  \fI(since C++20)\fP

   Exchanges the underlying handles of two jthread objects.

.SH Parameters

   other - the jthread to swap with

.SH Return value

   \fI(none)\fP

.SH Example


// Run this code

 #include <chrono>
 #include <iostream>
 #include <thread>

 void foo()
 {
     std::this_thread::sleep_for(std::chrono::seconds(1));
 }

 void bar()
 {
     std::this_thread::sleep_for(std::chrono::seconds(1));
 }

 int main()
 {
     std::jthread t1(foo);
     std::jthread t2(bar);

     std::cout << "thread 1 id: " << t1.get_id() << '\\n'
               << "thread 2 id: " << t2.get_id() << '\\n';

     std::swap(t1, t2);

     std::cout << "after std::swap(t1, t2):" << '\\n'
               << "thread 1 id: " << t1.get_id() << '\\n'
               << "thread 2 id: " << t2.get_id() << '\\n';

     t1.swap(t2);

     std::cout << "after t1.swap(t2):" << '\\n'
               << "thread 1 id: " << t1.get_id() << '\\n'
               << "thread 2 id: " << t2.get_id() << '\\n';


 }

.SH Possible output:

 thread 1 id: 140185268262656
 thread 2 id: 140185259869952
 after std::swap(t1, t2):
 thread 1 id: 140185259869952
 thread 2 id: 140185268262656
 after t1.swap(t2):
 thread 1 id: 140185268262656
 thread 2 id: 140185259869952

.SH See also

   swap(std::jthread) specializes the std::swap algorithm
   (C++20)            \fI(function)\fP
